IP 地址,是一個(gè)大家都耳熟能詳?shù)拿~。以生活舉例,IP 在互聯(lián)網(wǎng)中的作用就像是寄件時(shí)的收件人地址和寄件人地址,收件人地址讓信件可以被正確送達(dá),寄件人地址則讓收到信的人可以回信。
IP 地址作為每一個(gè)互聯(lián)網(wǎng)設(shè)備都擁有的,獨(dú)一無(wú)二的地址,其本質(zhì)是 TCP/IP 協(xié)議族中網(wǎng)絡(luò)層的協(xié)議,也是 TCP/IP 協(xié)議族的核心協(xié)議。自 1981 年 Jon Postel 在 RFC791 中定義了第一次定義了 IP,到現(xiàn)在 IP 已經(jīng)是現(xiàn)今互聯(lián)網(wǎng)技術(shù)的基礎(chǔ)。目前的全球互聯(lián)網(wǎng)所采用的協(xié)議族是 TCP/IP 協(xié)議族。而 IPv4 是互聯(lián)網(wǎng)協(xié)議(Internet Protocol,IP)的第四版。
IP 地址的表示方式
IPv4 地址(下文統(tǒng)稱 IP 地址)是一個(gè) 32 位的二進(jìn)制數(shù)表示的地址。因此,除了全 0 地址用來(lái)表示一個(gè)無(wú)效的,未知的,或者不可用的目標(biāo)外,IPv4 一共擁有 2^32-1 個(gè)地址。它通常都是如下的樣子:
01111111000000000000000000000001顯而易見(jiàn),直接展示完整 32 位的 IP 地址既不直觀也不好記憶。所以為了方便使用,我們把這 32 位二進(jìn)制數(shù)分成八位一組,稱之為八位組(octet)。每個(gè)八位組書(shū)寫(xiě)時(shí)用點(diǎn)分十進(jìn)制的格式標(biāo)識(shí)。每個(gè)八位組取值為0000000011111111(二進(jìn)制數(shù)),使用十進(jìn)制數(shù)表示則值為 0255。這就讓 IP 地址變成了下面的樣子:
01111111 00000000 00000000 00000001而因?yàn)槎M(jìn)制與十進(jìn)制的轉(zhuǎn)化非常簡(jiǎn)單,只需要用二進(jìn)制數(shù)的每一位乘以 2 的 N 次方即可,這其中的 N 是相應(yīng)的位,從低位到高位以 0 次方開(kāi)始,將二進(jìn)制是 1 的每位結(jié)果相加得到的就是相應(yīng)的十進(jìn)制數(shù)。
把 32 位的二進(jìn)制數(shù)的 IP 地址使用點(diǎn)分十進(jìn)制來(lái)標(biāo)識(shí),除了全 0,這個(gè)范圍是從 000.000.000.001 到 255.255.255.255。然后再進(jìn)一步的優(yōu)化,例如對(duì)于 000.000.000.001,每個(gè)八位組中,高位的 0 可以不用寫(xiě)出,即為 0.0.0.1。這一步步的最終讓 IP 地址變成了現(xiàn)在我們最熟悉的樣子,比如10.0.0.1、192.168.33.44 這類(lèi)。順帶一提我們上面舉例用的 IP 地址轉(zhuǎn)換為點(diǎn)分十進(jìn)制后,就是大名鼎鼎的本機(jī)回送地址,這個(gè)地址是筑基內(nèi)部的 IP 地址,主要用于網(wǎng)絡(luò)軟件測(cè)試以及本地機(jī)進(jìn)程間通信,無(wú)論什么程序,一旦使用回送地址發(fā)送數(shù)據(jù),協(xié)議軟件立即返回之,不進(jìn)行任何網(wǎng)絡(luò)傳輸。
127.0.0.1IP 地址的結(jié)構(gòu)
看到這里大家自然就會(huì)想到,除了本機(jī)地址,IP 還有其他地址嗎?沒(méi)想到吧,真的有。IP 地址可以劃分為兩個(gè)部分 :網(wǎng)絡(luò)地址和主機(jī)地址。
●?網(wǎng)絡(luò)地址:表示主機(jī)所在的網(wǎng)絡(luò)區(qū)域
●?主機(jī)地址:主機(jī)在網(wǎng)絡(luò)區(qū)域中的具體邏輯位置
如果我們把 IP 地址和電話號(hào)碼做類(lèi)比:電話號(hào)碼 0571-81020204 中,0571 是區(qū)號(hào),代表浙江杭州,類(lèi)似于 IP 地址中的網(wǎng)絡(luò)地址部分。81020204 是杭州市內(nèi)某一個(gè)電話機(jī)的確切號(hào)碼,這就類(lèi)似于 IP 地址中的主機(jī)地址部分。
當(dāng) IP 數(shù)據(jù)包在網(wǎng)絡(luò)中傳遞時(shí),路由器只關(guān)心目的 IP 地址的網(wǎng)絡(luò)地址部分,通過(guò)識(shí)別 IP 地址的網(wǎng)絡(luò)部分,來(lái)為 IP 數(shù)據(jù)包進(jìn)行路由操作。當(dāng)數(shù)據(jù)包達(dá)到了目的的網(wǎng)段以后,才通過(guò) IP 地址的主機(jī)部分查找具體的接收主機(jī)。
那么,對(duì)于 IP 地址來(lái)說(shuō),哪幾位是網(wǎng)絡(luò)部分,哪幾位是主機(jī)部分呢?這就需要根據(jù)網(wǎng)絡(luò)規(guī)模和實(shí)際需求來(lái)劃分了。
IP 地址的分類(lèi)
IP 在被設(shè)計(jì)時(shí),將 IP 地址分成五個(gè)等級(jí)(Class A、B、C、D、E)。一般常用的是 A、B、C 這三種等級(jí)的 IP 地址,分別適用在大、中、小型網(wǎng)絡(luò)。在申請(qǐng) IP 地址時(shí),會(huì)由負(fù)責(zé)管理 IP 地址的機(jī)構(gòu),依照申請(qǐng)者所需要的網(wǎng)絡(luò)規(guī)模,賦予不同等級(jí)的 IP 地址。
A、B、C類(lèi)的網(wǎng)絡(luò)部分和主機(jī)部分的長(zhǎng)短各不相同,網(wǎng)絡(luò)地址越短,對(duì)應(yīng)的可分配的主機(jī)地址就會(huì)越多。
在A、B、C 類(lèi)地址中,有一部分被用做了私有地址。私有地址又稱為私網(wǎng)地址或假地址,是指不在互聯(lián)網(wǎng)上使用的,僅在企業(yè)或組織內(nèi)部局域網(wǎng)上使用的 IP 地址。與之對(duì)應(yīng)的,可以在互聯(lián)網(wǎng)上使用的 IP 地址稱為公網(wǎng)地址或真地址。私有地址的存在讓局域網(wǎng)中的主機(jī)不需要全部分配互聯(lián)網(wǎng)的可用地址,從而節(jié)約有限的 IP 地址資源。
IP 地址的未來(lái)
我們前面提到 IPv4 一共擁有 2^32-1 個(gè)地址。這個(gè)數(shù)量乍一眼看上去是很多的,但是考慮到現(xiàn)在每一個(gè)手機(jī),每一臺(tái)電腦,甚至每一個(gè)冰箱都會(huì)接入網(wǎng)絡(luò),都需要一個(gè) IP 地址,那這個(gè)數(shù)量一下子就不夠用了。
2011 年 2 月 3 日,全球 IP 地址分配機(jī)構(gòu) IANA(Internet Assigned Numbers Authority)就宣布其地址池中的 IPv4 地址分配完畢了。2011 年 4 月 15 日,亞太互聯(lián)網(wǎng)絡(luò)信息中心(APNIC)在 2012 年 9 月 14 日為歐洲網(wǎng)絡(luò)信息中心(RIPE NCC)分配了最后一個(gè) IPv4 區(qū)塊,在 2014 年 6 月 10 日為拉丁美洲和加勒比海(LACNIC)分配了最后一個(gè) IPv4 區(qū)塊。2015 年 9 月 24 日為北美分配 IPv4 區(qū)塊,2019 年 11 月 26 日,歐洲 RIPE NCC 終于耗盡了存儲(chǔ)。
沒(méi)有了 IP 地址新的設(shè)備就無(wú)法接入互聯(lián)網(wǎng),為了解決這個(gè)問(wèn)題我們開(kāi)始擁抱 IPv6。IPv6 的地址數(shù)量是 IPv4 的 2 的 96 次方倍,不用再擔(dān)心地址枯竭的問(wèn)題。